<?php
App::uses('File', 'Utility');
class BeneficiosAdministrativosController extends AppController 
{
	
	public $uses = array('BeneficiosAdministrativo','Sede','BeneficiosAdministrativosSede');
	
	public $bandera = true;
	
	#---------------------------------------------------#
	#---------------Funciones Principales---------------#
	#---------------------------------------------------#
	public function index()
	{
		$this->layout = 'default_ini';	  
	}
	
	public function add_beneficio()
	{
		$this->layout = 'default_ini';		
		if($this->request->is('post') || $this->request->is('put'))
		{
			$this->postAddBeneficio();
				
		}
	}
	public function assign_add_beneficio($id_beneficio_adm)
	{
		$this->layout = 'default_ini';	
		$this->llenar_info_assign_beneficio($id_beneficio_adm);
			
		if($this->request->is('post') || $this->request->is('put'))
		{
			//debug($this->request->data);
			$this->postAssignAddBeneficio();
				
		}
	}
	/*public function consult_beneficio($nombre_beneficio_adm = null)
	{
		$this->layout = 'default_ini';	
		if ($nombre_beneficio_adm == "")
		{
			$this->Session->setFlash(__('error nombre_beneficio'));
		}
		else
		{
			$this->infoConsultBeneficio($nombre_beneficio_adm);
			if($this->request->is('post') || $this->request->is('put'))
			{
				$this->postConsultBeneficio();
			}
		}
	}*/
	public function consult_beneficio( )
	{
		$this->layout = 'default_ini';	
		
	}
	public function edit_beneficio ($id_beneficio_adm = null)
	{
		$this->layout = 'default_ini';	
		if($id_beneficio_adm == "")
		{
			$this->Session->setFlash(__('error id_beneficio_adm'));
		}
		else 
		{
			$this->llenarInfoBeneficio(1, $id_beneficio_adm);
			if($this->request->is('post') || $this->request->is('put'))
			{
				
				$this->postEditBeneficio();
			}
			
		}
	}
	
	public function detalle_beneficio ($id_beneficio = null)
	{
		$this->layout = 'default_ini';	
		if($id_beneficio == "")
		{
			$this->Session->setFlash(__('error id_beneficio'));
		}
		else 
		{
			$this->llenarInfoBeneficio(2, $id_beneficio);
			
		}
	}
	
	
	#---------------------------------------------------#
	#---------------Funciones Secundarias---------------#
	#---------------------------------------------------#
	private function setMessageFlash($id,$mensaje,$nombre_mensaje)
	{
		if (is_null($nombre_mensaje))
		{
			$nombre_mensaje = 'flash';
		}
		switch ($id) 
		{
			case 1: // mensaje bueno
				$this->Session->setFlash($mensaje,'default',array('class'=>'success'),$nombre_mensaje);
				break;
			case 2: // mensaje malo
				$this->Session->setFlash($mensaje,'default',array('class'=>'error-message'),$nombre_mensaje);
				break;
			case 3: // mensaje cuidado
				$this->Session->setFlash($mensaje,'default',array('class'=>'notice'),$nombre_mensaje);
				
				break;
			
			default:
				
				break;
		}
	}
	
	public function getDetalleBeneficio($id_beneficio)
	{
		$this->layout = false;
		if ($this->request->is('get')) 
		{
			$this->llenarInfoBeneficio(2, $id_beneficio);
			$this->render('/Elements/GetDetalleBeneficioAdm');
		}
	}
	
	public function getErrors($errors)
	{
		$errores_view = '';
		
		if (array_key_exists('nombre_beneficio_administrativo', $errors))
		{
			$errores_view = $errores_view .'|'.'Nombre del Beneficio'.'++'.$errors['nombre_beneficio_administrativo'][0];
		}

		return $errores_view;
		
		
	}
	public function parserError($error)
	{
		$array_error = array();	
			
		$string_error = explode('|', $error);
		
		for ($i = 0; $i < count($string_error); $i++)
		{
			if ($i != 0)
			{
				$string_problema = explode('++',$string_error[$i]);
					
				array_push($array_error,array(
												'campo' => $string_problema[0],
												'error' => $string_problema[1],
												)
							);
			}
			
		}
		return $array_error;
	}
	
	public function getEditBeneficio($id_beneficio,$error = null)
	{
		$this->layout = false;
		
		if ($this->request->is('get')) 
		{
			$this->llenarInfoBeneficio(1, $id_beneficio);
			
			if ($error)
			{
				$this->set('errors',$this->parserError($error));	
			}
			else
			{
				$this->set('errors',null);	
			}
			
			
			$this->render('/Elements/GetEditBeneficioAdm');
		}
		elseif ($this->request->is('post') || $this->request->is('put') )
		{
		
			$info_beneficio = array( 
										'BeneficiosAdministrativo'=> array(
															'id' => $this->request->data['id'],
															'nombre_beneficio_administrativo' => $this->request->data['nombre_beneficio_administrativo'],
															'descripcion_beneficio_administrativo' => $this->request->data['descripcion_beneficio_administrativo'],
														) 
										
									);

			

			$this->postEditBeneficio($info_beneficio);
		}
		
	}
	
	public function getGridConsultBeneficioAdministrativo($nombre_beneficio_adm)
	{
		
		$this->layout = false;
		if ($this->request->is('get')) 
		{
			$this->llenar_beneficio($nombre_beneficio_adm);
			$this->render('/Elements/GridConsultBeneficioAdministrativo');
		}
		
	}
	
	private function postAssignAddBeneficio()
	{
		$this->BeneficiosAdministrativo->create();
		if($this->BeneficiosAdministrativo->save($this->request->data))
		{
			$this->setMessageFlash(1, 'Se asigno el beneficio',null);
			$this->redirect(array('action' => 'index'));
		}
		else
		{
			$this->setMessageFlash(2, 'No se asigno el beneficio',null);
		}
	}
	
	private function llenar_info_assign_beneficio($id_beneficio_adm)
	{
		$this->llenar_combobox_sede(2);
		$this->llenarInfoBeneficio(2, $id_beneficio_adm);
		
	}
	
	private function llenar_combobox_sede($id)
	{
		$sedes = $this->Sede->find('all');
		
		
		$arreglo = array();
		
		if ($id == 1)
		{
			array_push($arreglo, array (0 => 'Todos'));
		}
		elseif ($id == 2) 
		{
			array_push($arreglo, array (0 => 'Seleccione Una Opcion'));
		}
		
		foreach ($sedes as $sede) 
		{
				array_push($arreglo,array ($sede['Sede']['id'] => $sede['Sede']['nombre_sede']));
		}
		
		$this->set('sedes',$arreglo);

	}

	private function validar_fechas($fecha_inic, $fecha_fin)
	{
		
		if (strtotime($fecha_inic) < strtotime($fecha_fin))
		{
			return true;
		}
		else 
		{
			return false;	
		}
		
		
	}
	
	private function postEditBeneficio($info_beneficio)
	{
		$this->BeneficiosAdministrativo->create();
		
		$this->BeneficiosAdministrativo->set($info_beneficio);
		
		$error = null;
		
		if ($this->BeneficiosAdministrativo->validates()) 
		{
    		
			if ($this->BeneficiosAdministrativo->save($info_beneficio))
			{
				$this->setMessageFlash(1, 'Se guardo los cambios del Beneficio',null);
				
			}
			else 
			{
				$this->setMessageFlash(2, 'No se guardo los cambios del Beneficio',null);
				
				
			}
		}
		else 
		{
		    $this->setMessageFlash(2, 'No se guardo los cambios del Beneficio',null);
			
			$error = $this->getErrors( $this->BeneficiosAdministrativo->validationErrors);
			
		}
		
		$this->redirect(array(
									'controller' => 'BeneficiosAdministrativos',
									'action' => 'getEditBeneficio',$this->BeneficiosAdministrativo->id,$error
							   )
						 );
		
	}
	
	private function llenarInfoBeneficio($id_busqueda,$id_beneficio_adm)
	{
		if ($id_busqueda == 1) // si es para edit
		{
			$this->llenar_combobox_sede(2);
		}
		$this->infoBeneficioEspecifica($id_beneficio_adm);
	}
	
	private function infoBeneficioEspecifica($id_beneficio_adm)
	{
		$beneficios_adms = $this->BeneficiosAdministrativo->query('SELECT * 
										FROM beneficios_administrativos BA
										WHERE BA.id ='.$id_beneficio_adm);
		$this->set('beneficios_adms',$beneficios_adms);
	}
	
	private function postConsultBeneficio()
	{
		
		$nombre_beneficio_busq = $this->request->data['Consult_Beneficio']['nombre_beneficio_busq'];
		
		if ($nombre_beneficio_busq == NULL)
		{
			$nombre_beneficio_busq = "*";
		}
		
		$this->redirect(array('action' => 'consult_beneficio',$nombre_beneficio_busq));
		
	}
	
	private function llenar_beneficio($nombre_beneficio_adm)
	{
		$strqry = 'SELECT *
					FROM beneficios_administrativos BA
					WHERE 1=1';
		
		
		if ($nombre_beneficio_adm != "*")
		{
			$strqry = $strqry.' AND BA.nombre_beneficio_administrativo LIKE "%'.$nombre_beneficio_adm.'%"';
		}
		$strqry = $strqry.' ORDER BY BA.id ASC';
		$beneficios_adms = $this->BeneficiosAdministrativo->query($strqry);
		$this->set('beneficios_adms',$beneficios_adms);
		
	}
	
	private function infoConsultBeneficio($nombre_beneficio_adm)
	{
		
		$this->llenar_beneficio($nombre_beneficio_adm);
		$this->set('nombre_beneficio_adm',$nombre_beneficio_adm);
	}
	
	private function postAddBeneficio()
	{
		$this->BeneficiosAdministrativo->create();
		if($this->BeneficiosAdministrativo->save($this->request->data))
		{
			//$beneficio = $this->Beneficio->findAllByNombreBeneficio($this->request->data['Beneficio']['nombre_beneficio']);
			//debug($beneficio);
			$this->setMessageFlash(1, "Se guardo el Beneficio",null);
			//$this->redirect(array('controller' => 'BeneficiosAdministrativos','action' => 'assign_add_beneficio',$beneficio[0]['Beneficio']['id']));
			$this->redirect(array('controller' => 'BeneficiosAdministrativosSedes','action' => 'assign_add_beneficio',$this->BeneficiosAdministrativo->id));
		}
		else
		{
			$this->setMessageFlash(2, "No Se pudo guardar el Beneficio",null);
		}
	}
	
	
}



?>